#ifndef __ALWAYSKNOW_PROCESS_SYM_H__
#define __ALWAYSKNOW_PROCESS_SYM_H__

#include "lds.h"
#include "akfs.h"
#include <linux/fs.h>
#include <linux/security.h>
#include <linux/binfmts.h>
#include <linux/sched.h>
/**
 * @brief 进程信息类型
 */
enum akfs_process_type_s{
    PROCESS_TYPE_FORK = 1001, 
    PROCESS_TYPE_EXEC , //+1 
    PROCESS_TYPE_EXIT , //+2
};

/**
 * @brief 进程信息结构体 
 */
typedef struct akfs_process_s{
    uint64_t timestamp;
    unsigned int data_type;
    pid_t pid;
    pid_t ppid;
    pid_t ptgid;
    uid_t uid;
    pid_t gid;
    unsigned int ns;
    char parent_name[64];
    char exec_hash[64];
    char exec_file[256];
    char argv[256];
}akfs_process_t __attribute__((aligned(8)));

/**
 * @brief hook点投递数据接口
 */
void process_fork_put(struct task_struct *task ,long pid);

void process_bprm_put(struct task_struct *task ,struct linux_binprm *bprm);

void process_exit_put(struct task_struct *task);

#endif
